package br.unicamp.ic.inf300.arena.modelo.vendas;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * EstornoCartao.java
 */
import java.sql.Timestamp;
import java.util.Collection;

public class EstornoCartao extends Estorno {

	private CartaoCredito cartaoCredito;

	public EstornoCartao() {
		super();
	}
	
	/**
	 * 
	 * @param valor
	 * @param cartaoCredito
	 */
	public EstornoCartao(double valor, CartaoCredito cartaoCredito) {
		super();
		this.cartaoCredito = cartaoCredito;
		this.cartaoCredito.setValor(valor);		
	}
	
	public EstornoCartao(long numero, Timestamp dataHora, Venda venda, Collection<Bilhete> billhetes, Collection<ValeEntrada> valesEntrada) {
		super(numero, dataHora, venda, billhetes, valesEntrada);
	}

	public CartaoCredito getCartaoCredito() {
		return cartaoCredito;
	}

	public void setCartaoCredito(CartaoCredito cartaoCredito) {
		this.cartaoCredito = cartaoCredito;
	}

	public double getValor() {
		return this.cartaoCredito.getValor();
	}

	public void setValor(double valor) {
		this.cartaoCredito.setValor(valor);
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("EstornoCartao ( ")
	        .append(super.toString()).append(TAB)
	        .append("cartaoCredito = ").append(this.cartaoCredito).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result
				+ ((cartaoCredito == null) ? 0 : cartaoCredito.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		final EstornoCartao other = (EstornoCartao) obj;
		if (cartaoCredito == null) {
			if (other.cartaoCredito != null)
				return false;
		} else if (!cartaoCredito.equals(other.cartaoCredito))
			return false;
		return true;
	}
}